package com.kuxhausen.huemore; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.content.res.Configuration; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; import com.example.android.common.view.SlidingTabLayout; import com.kuxhausen.huemore.net.BrightnessManager; import com.kuxhausen.huemore.net.DeviceManager; import com.kuxhausen.huemore.persistence.Definitions.PreferenceKeys; import com.kuxhausen.huemore.state.Group; /** * @author Eric Kuxhausen */ public class SecondaryFragment extends Fragment implements OnServiceConnectedListener, OnActiveMoodsChangedListener, DeviceManager.OnStateChangedListener { private NavigationDrawerActivity mParent; private SharedPreferences mSettings; private ViewPager mMoodManualViewPager; private MoodManualPagerAdapter mMoodManualPagerAdapter; private SlidingTabLayout mMoodManualSlidingTabLayout; private SeekBar mBrightnessBar, mMaxBrightnessBar; private TextView mBrightnessDescriptor; private boolean mIsTrackingTouch = false; private String brightnesstitle = ""; private String brightnesspercent = ": 0%"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); View myView = inflater.inflate(R.layout.secondary_activity, null); mParent = (NavigationDrawerActivity) this.getActivity(); if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) < Configuration.SCREENLAYOUT_SIZE_LARGE) { //if not in splitscreen mode, try change page title to any selected group if (mParent.boundToService()) { Group currentlySelected = mParent.getService().getDeviceManager().getSelectedGroup(); if (currentlySelected != null) { mParent.getSupportActionBar().setTitle(currentlySelected.getName()); } } } mMoodManualPagerAdapter = new MoodManualPagerAdapter(this); // Set up the ViewPager, attaching the adapter. mMoodManualViewPager = (ViewPager) myView.findViewById(R.id.manual_mood_pager); mMoodManualViewPager.setAdapter(mMoodManualPagerAdapter); // Give the SlidingTabLayout the ViewPager, this must be done AFTER the ViewPager has had // it's PagerAdapter set. mMoodManualSlidingTabLayout = (SlidingTabLayout) myView.findViewById(R.id.manual_mood_sliding_tabs); mMoodManualSlidingTabLayout.setViewPager(mMoodManualViewPager); mMoodManualSlidingTabLayout.setSelectedIndicatorColors(this.getResources().getColor( R.color.accent)); mMoodManualSlidingTabLayout.setBackgroundColor(getResources().getColor(R.color.day_primary)); mSettings = PreferenceManager.getDefaultSharedPreferences(mParent); if (mSettings.getBoolean(PreferenceKeys.DEFAULT_TO_MOODS, true)) { mMoodManualViewPager.setCurrentItem(MoodManualPagerAdapter.MOOD_LOCATION); } mBrightnessDescriptor = (TextView) myView.findViewById(R.id.brightnessDescripterTextView); mBrightnessBar = (SeekBar) myView.findViewById(R.id.brightnessBar); mBrightnessBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { mIsTrackingTouch = false; } @Override public void onStartTrackingTouch(SeekBar seekBar) { mIsTrackingTouch = true; } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (mParent.boundToService()) { if (fromUser) { DeviceManager dm = mParent.getService().getDeviceManager(); if (dm.getSelectedGroup() != null) { dm.obtainBrightnessManager(dm.getSelectedGroup()).setBrightness(progress); brightnesspercent = ": " + progress + "%"; mBrightnessDescriptor.setText(brightnesstitle + brightnesspercent); } } } } }); mMaxBrightnessBar = (SeekBar) myView.findViewById(R.id.maxBrightnessBar); mMaxBrightnessBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { mIsTrackingTouch = false; } @Override public void onStartTrackingTouch(SeekBar seekBar) { mIsTrackingTouch = true; } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (mParent.boundToService()) { if (fromUser) { DeviceManager dm = mParent.getService().getDeviceManager(); if (dm.getSelectedGroup() != null) { dm.obtainBrightnessManager(dm.getSelectedGroup()).setBrightness(progress); brightnesspercent = ": " + progress + "%"; mBrightnessDescriptor.setText(brightnesstitle + brightnesspercent); } } } } }); return myView; } @Override public void onStart() { super.onStart(); mParent.getSupportActionBar().setElevation(0); } @Override public void onResume() { super.onResume(); mParent.registerOnServiceConnectedListener(this); setMode(); } @Override public void onServiceConnected() { mParent.getService().getDeviceManager().registerBrightnessListener(this); mParent.getService().getMoodPlayer().addOnActiveMoodsChangedListener(this); setMode(); } @Override public void onActiveMoodsChanged() { setMode(); } public void setMode() { if (!mParent.boundToService() || mBrightnessBar == null) { return; } Group g = mParent.getService().getDeviceManager().getSelectedGroup(); BrightnessManager bm = mParent.getService().getDeviceManager().peekBrightnessManager(g); if (bm != null && bm.getPolicy() == BrightnessManager.BrightnessPolicy.VOLUME_BRI) { mBrightnessBar.setVisibility(View.GONE); mMaxBrightnessBar.setVisibility(View.VISIBLE); ///mBrightnessDescriptor.setText(R.string.max_brightness); brightnesstitle = getActivity().getString(R.string.max_brightness); mBrightnessDescriptor.setText(brightnesstitle + brightnesspercent); } else { mBrightnessBar.setVisibility(View.VISIBLE); mMaxBrightnessBar.setVisibility(View.GONE); ///mBrightnessDescriptor.setText(R.string.brightness); brightnesstitle = getActivity().getString(R.string.brightness); mBrightnessDescriptor.setText(brightnesstitle + brightnesspercent); } } @Override public void onPause() { super.onPause(); if (mParent.boundToService()) { mParent.getService().getDeviceManager().removeBrightnessListener(this); mParent.getService().getMoodPlayer().removeOnActiveMoodsChangedListener(this); } } @Override public void onStop() { super.onStop(); mParent.getSupportActionBar() .setElevation(getResources().getDimension(R.dimen.elevation_action_bar)); } @Override public void onSaveInstanceState(Bundle outstate) { Editor edit = mSettings.edit(); switch (mMoodManualViewPager.getCurrentItem()) { case MoodManualPagerAdapter.MANUAL_LOCATION: edit.putBoolean(PreferenceKeys.DEFAULT_TO_MOODS, false); break; case MoodManualPagerAdapter.MOOD_LOCATION: edit.putBoolean(PreferenceKeys.DEFAULT_TO_MOODS, true); break; } edit.commit(); super.onSaveInstanceState(outstate); } public void invalidateSelection() { ((MoodListFragment) (mMoodManualPagerAdapter.getItem(MoodManualPagerAdapter.MOOD_LOCATION))) .invalidateSelection(); } @Override public void onStateChanged() { if (mParent != null && mParent.boundToService()) { DeviceManager dm = mParent.getService().getDeviceManager(); if (!mIsTrackingTouch && mBrightnessBar != null && mMaxBrightnessBar != null && dm.getSelectedGroup() != null) { int brightness = dm.obtainBrightnessManager(dm.getSelectedGroup()).getBrightness(); mBrightnessBar.setProgress(brightness); mMaxBrightnessBar.setProgress(brightness); brightnesspercent = ": " + brightness + "%"; mBrightnessDescriptor.setText(brightnesstitle + brightnesspercent); } } } }